1. Technical Field
This disclosure relates to digital rights management methods and systems. More particularly, the present disclosure relates to binding digital rights management executable code to a software application.
2. Related Art
The advent of digital distribution has created new business models for the delivery of software over the internet. One of the most widely used techniques to provide protection against illegal distribution and piracy of software is called wrapping.
Wrapping consists of adding a security and verification layer or a digital rights management layer (wrapper code) on top of an unprotected executable (host software or wrapped code henceforward) that typically verifies its associated business rules. Business rules typically include verification that the protected software has been purchased or, in the case of try and buy offerings, verification that the software is still within the trial period. Other types of digital rights management technologies can similarly be used. The most obvious benefit of performing wrapping at the executable level (vs. implementing security at the source-code level) is that the software developer does not need to worry about security when designing or implementing his or her software as wrapping does not require any source-code modifications. This results in a faster time to market.
The wrapper code (stub henceforward) verifies that a set of conditions are met when the protected executable first starts and then allows it to run normally if everything is as expected. For example, in a try-before-you-buy scenario, the wrapping code might first check the current date. If the current date is greater than the trial period's end, the software will display an expiration screen. Conversely, if the software is allowed to run, the wrapped code will be unencrypted and executed. At the moment when the host software is unencrypted, the software is vulnerable.
One of the most common attacks against wrapped software is to regenerate the original executable from the wrapped (or protected) executable. Because the original, non-secured executable contains no protection logic, it is relatively easy to dump the host software from memory and then distribute the unprotected host code throughout the Internet and Peer-to-Peer networks. This attack technique is possible because in conventional wrapping, the original wrapped executable can be easily separated from the wrapper code.
Current software production models join a wrapper (stub) to the application to be protected (host) during a preparation phase. When a protected application is launched, the stub enables the host to run (usually the application is encrypted or mangled to make it difficult to run without running the stub code first). The stub code is high secure code, while the host code is typically insecure code that could be easily modified by experts.
When host code is protected with any of the existing protection models, the easiest attack is the “memory dump attack”. A memory dump attack is performed by waiting until the stub code is executed, and then the memory area occupied by the executable (including the protected application) is dumped to disk or other storage medium. This memory area is a plain image of the protected application that could be modified to allow the operating system loader to launch the modified protected application again without running the stub code. In this manner, the protection of the protected application is effectively circumvented.
To prevent this attack, the protection model must mangle, in some way, the host code and maintain the host code in a mangled state, while the host code resides in memory. When a mangled area of host code is reached, the stub code will be responsible for managing the execution flow. By mangling the host code, the attacker is forced to recompose the mangled host code bytes to allow the application to run without assistance from the stub. Because the host requires the execution of the stub code, this conventional protection system enables the execution of additional anti-tampering routines as part of the overall protection system. However, these anti-tampering routines are never executed if the attacker is able to strip out the stub code and execute the host code directly.
Thus, a computer-implemented method and system for binding digital rights management executable code to a software application are needed.